1. Field of the Invention
The present invention relates to the field of data processing. More particularly, this invention relates to data processing systems that require operations to be performed on one or more data streams.
2. Description of the Prior Art
It is known to provide data processing systems that are capable of performing operations on data and such operations can involve data flow in both directions i.e. input to output or output to input, where each of the input data and the output data can have an associated data format. Examples of commonly required data stream operations for data flow in both directions include data alignment, buffering, forwarding and rewinding of a data stream and datastream merging and splicing functions, as well as retrieval of variable-length coded syntax elements on the stream. It is also often required to make alterations to the input temporal sequence to provide an output data stream having a different temporal sequence i.e. to provide out-of-order access to a datastream. Examples of such data processing systems that require operations to be performed are systems for processing multimedia datastreams comprising audio data and/or video data that have been encoded according to known formats, the format having been defined by an international “standard” (e.g. MP3 or MPEG).
However, these known data processing systems place a significant burden on the programmer, since the programmer is required to explicitly manage many of the data handling tasks such as keeping track of which portions of the input data stream have been received, operated on and output or to provide and maintain a software library with a plurality of functions for performing data handling. Both explicit management of data handling is time-consuming and providing and maintaining a software library are time-consuming and inefficient. Thus there is a need for a data processing system that abstracts away from the programmer at least some of the tasks associated with handling input and output data in a more efficient way.
In a data processing apparatus having a main processing unit, it is known to provide a data engine, sometimes also referred to as a loosely-coupled coprocessor (loosely coupled in the sense that it resides externally to the main processing unit and that synchronisation between the data engine and the main processing unit only takes place on a process or task level), which can be used to handle certain data processing tasks on behalf of the main processing unit. In this description the term main processing unit (i.e. main processor) is defined such that it may be a central processing unit (CPU), or alternatively may be some other simplified control element within the data processing apparatus, for example a control element which merely controls boot up, and then delegates all other tasks to one or more data engines. Providing a data engine can lead to various performance improvements with respect to a data processing apparatus where all of the tasks are handled by the main processing unit, these improvements being for example one or more of an increase in speed of execution, a reduction in power consumption for a given set of tasks, or a decrease in the total silicon area required to support the required functionality. However, data stream handling tasks are typically computationally intensive and when allocated to the data engine can consume a large proportion of the computational power of the data engine thereby reducing its availability to perform other data processing tasks on behalf of the main processor.
U.S. patent application Ser. No. 11/121,185, which was filed on 4 May 2005 describes a data processing apparatus having a local First-in-First-Out (FIFO) memory, which may be used to provide a window into a locally stored data stream. The contents of U.S. Ser. No. 11/121,185 are incorporated herein by reference.